Add migrate-dotnet10-to-dotnet11 skill#181
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new .NET migration skill package to the dotnet plugin, including reference material and an eval suite to validate the skill’s guidance for .NET 10 → .NET 11 upgrades.
Changes:
- Added
migrate-dotnet10-to-dotnet11skill with a structured workflow and conditional reference loading. - Added 6 reference documents covering core libraries, C# compiler, EF Core, crypto, runtime/JIT, and SDK/MSBuild breaking changes.
- Added a 7-scenario eval suite and updated CODEOWNERS for the new skill/test directories.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/SKILL.md |
New migration skill definition and step-by-step workflow guidance. |
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/core-libraries.md |
Core library breaking changes reference used by the skill. |
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/csharp-compiler.md |
C# 15 / Roslyn breaking changes reference used by the skill. |
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/efcore.md |
EF Core 11 breaking changes reference (Cosmos sync I/O removal). |
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/cryptography.md |
Crypto breaking changes reference (DSA removal on macOS). |
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/runtime-jit.md |
Runtime/JIT breaking changes reference (hardware baseline, globalization). |
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/sdk-msbuild.md |
SDK/MSBuild breaking changes reference (Mono launch target behavior). |
tests/dotnet/migrate-dotnet10-to-dotnet11/eval.yaml |
New eval scenarios asserting the skill covers key migration breaks and fixes. |
.github/CODEOWNERS |
Assigns ownership for the new skill and test directories. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...otnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/csharp-compiler-dotnet10to11.md
Show resolved
Hide resolved
...otnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/csharp-compiler-dotnet10to11.md
Show resolved
Hide resolved
|
/evaluate |
Skill Validation Results
Model: claude-opus-4.6 | Judge: claude-opus-4.6 |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Local Eval Results (post review-feedback fixes)3 iterations (the CI run posted above used 1 iteration), claude-opus-4.6 model & judge, run locally.
Overall: ✅ passed (22.4% improvement, threshold 10%). Skill activated in all 7 scenarios. No overfitting detected. ⏰ = baseline run(s) hit timeout (agent spent time searching for non-existent skill file in empty workspace). |
3 |
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/efcore.md
Outdated
Show resolved
Hide resolved
AndriySvyryd
left a comment
There was a problem hiding this comment.
Reviewed EF Core content
|
/evaluate |
Adds a new migration skill that guides upgrading .NET 10 projects to .NET 11, covering TFM updates, NuGet package upgrades, and breaking changes across the .NET 11 Preview 1 surface area. Sources: - https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-11.0/breaking-changes - https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/breaking-changes/compiler%20breaking%20changes%20-%20dotnet%2011 - https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-11/overview Skill coverage: - C# 15 compiler: Span safe-context, ref readonly InAttribute, nameof(this.), with() parsing, dynamic &&/|| with interfaces - Core libraries: DeflateStream/GZipStream empty payloads, MemoryStream capacity, TAR checksum validation, ZipArchive.CreateAsync eager loading, Environment.TickCount consistency - EF Core 11: Cosmos DB sync I/O fully removed - Cryptography: DSA removed from macOS - Runtime/JIT: x86-64-v2 minimum, Arm64 LSE requirement on Windows - SDK: Mono launch target removed for .NET Framework apps 6 reference files loaded based on project type + 7 eval scenarios. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add documentation for the NamedPipeClientStream constructor obsoletion (SYSLIB0063) which was merged in dotnet/runtime#120328 for .NET 11 but not yet documented on learn.microsoft.com. The isConnected parameter overload is obsoleted, and projects with TreatWarningsAsErrors will fail to build. Changes: - core-libraries.md: Add Obsoleted APIs section with SYSLIB0063 - SKILL.md: Add to description, Step 1 assessment, Step 3 patterns Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add explicit migration framing to skill description to differentiate from csharp-scripts skill (SDK was routing to wrong skill) - Add 'Use the migrate-dotnet10-to-dotnet11 skill' to eval prompts, matching real-world usage where users explicitly invoke migration skills Eval results (3 runs each, explicit skill invocation): Haiku: 6/7 activated, best +1.3 (compression/TAR scenario) Sonnet: 7/7 activated, best +0.3 (EF Core, TFM update scenarios) Skill activates reliably now. Quality gains are modest because the skill covers only Preview 1 breaking changes (training data already includes MS Learn docs). Expect larger gains as content grows with later previews. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…csharp-compiler.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Separate the breaking and fixed code into distinct blocks to avoid ambiguity about which line to use vs remove. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- SKILL.md: Show global.json as a diff edit preserving existing keys (rollForward, other settings) instead of replacing the entire file - csharp-compiler.md: Fix ref readonly lambda example to use a static field instead of a captured local (which won't compile in a lambda) - csharp-compiler.md: Declare missing local variable x in ref readonly local function example - eval.yaml: Fix ref readonly lambda snippet to use a class with a static field, matching the reference file fix Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…Core - Add @ViktorHofer as second owner for migrate-dotnet10-to-dotnet11 and migrate-nullable-references paths per CONTRIBUTING.md requirements - Add Preview 1 annotation to EF Core reference file per reviewer feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename e.g. efcore.md to efcore-dotnet10to11.md so names won't collide with reference files from other version migration skills. Update all paths in SKILL.md to match. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
8fbf5e5 to
35c2533
Compare
|
/evaluate |
|
Moved to dotnet-upgrade plugin. @ViktorHofer does this look OK to merge too? |
|
✅ Evaluation completed. View results | View workflow run |
|
@ViktorHofer in the table above that the validate flag produced, why eg
seems the skill made things worse (4.3 to 2.7) so why the check mark? It would be nice if the evaluator put some text after the table like "skill is better overall" or something. Also if the evaluator is going to update an existing comment, it should show the commit that it tested with. And I think I still don't understand why I got better results, also pasted above. |
Recreated from #153 (original PR was orphaned when the fork relationship with dotnet/skills was re-established).
Adds a new migration skill that guides upgrading .NET 10 projects to .NET 11, covering TFM updates, NuGet package upgrades, and source-breaking changes documented so far in .NET 11 Preview 1.
Sources
ASP.NET Core and WinForms breaking changes pages do not yet exist for .NET 11.
Skill coverage
The skill follows a structured 6-step workflow: assess → update TFMs/packages → fix source-incompatible changes → check behavioral changes → update infrastructure → verify. It references 6 conditional reference files loaded based on project type:
NamedPipeClientStreamconstructor removal (SYSLIB0063),ZLibStream/GZipStream/DeflateStreambehavioral changes,Utf8JsonWriter.WriteRawValuevalidation, TAR entry name changesSpan<T>safe-context rules,ref readonlyInAttribute changes,nameof(this.Member)semantics,withexpression parsing,dynamic&&/||operator resolutionEval suite
7 scenarios in
eval.yamltesting compression/TAR changes, C# 15 compiler breaks, EF Core Cosmos migration, hardware requirements, DSA macOS, TFM updates, and dynamic operator resolution.Status
This is an early skill covering .NET 11 Preview 1 only. Reference files will be expanded as Previews 2–7 ship and more breaking changes are documented.
Files added (9 files, ~800 lines)
plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/SKILL.mdplugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/(6 reference files)tests/dotnet/migrate-dotnet10-to-dotnet11/eval.yaml.github/CODEOWNERS(updated)